home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 5
/
Gekikoh Dennoh Club Vol. 5 (Japan).7z
/
Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin
/
internet
/
webx
/
webxp040.lzh
/
Source
/
draw_mouse.s
< prev
next >
Wrap
Text File
|
1998-07-25
|
11KB
|
494 lines
* draw_mouse.s â}âEâXâJü[â\âïè╓îW
.xdef draw_mouse_cursor
.xdef show_mouse_cursor,hide_mouse_cursor
.xdef _show_mouse_cursor,_hide_mouse_cursor
.xref _ms_pos,_ms_pos_x,_ms_pos_y
TEXTVRAM equ $e0_0000
CRTC_R21 equ $e8_002a
NEXT_LINE equ 128 * éPâëâCâôéáé╜éΦé╠âoâCâgÉö
*********************************************************
draw_mouse_cursor: * â}âEâXâJü[â\âïé≡ò`é¡
* âXü[âpü[é┼î─é╘é▒é╞
* in : d0.w = âpâ^ü[âôö╘ìåüi< 0 é┼Å┴ïÄüj
movem.l d1-d6/a0-a2,-(sp)
move.w d0,d6 * d6.w = âpâ^ü[âôö╘ìå
move.w CRTC_R21,-(sp)
move.w #0,CRTC_R21 * ârâbâgâ}âXâNü^ô»Ä₧âAâNâZâXâIât
* æOë±ò`éóé╜â}âEâXâJü[â\âïé≡Å┴é╖
move.l old_ms_pos_ptr,d0 * Å┴ïÄé╖éΘòKùvé¬éáéΘé⌐üH
beq draw_no_erase
movea.l d0,a1 * a1.l = ò`ëµé╖éΘâAâhâîâX
lea.l ms_save,a0 * a0.l = ô]æùî│
moveq.l #2-1,d0
@@:
.irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
move.l (a0)+,NEXT_LINE*%A(a1)
.endm
adda.l #$2_0000,a1
dbra d0,@b
draw_no_erase:
clr.l old_ms_pos_ptr
tst.w d6 * < 0 é╚éτÅ┴ïÄé╠é▌
bmi draw_mouse_cursor_rts
tst.b hide_level
bne draw_mouse_cursor_rts
* ò`ëµé╖éΘâAâhâîâXé╞ârâbâgê╩Æué≡ïüé▀éΘ
lea.l ms_hot_spot_data,a0
move.w d6,d0
lsl.w #2,d0
move.w 2(a0,d0.w),d3 * d3.w = âzâbâgâXâ|âbâg y
move.w (a0,d0.w),d2 * d2.w = âzâbâgâXâ|âbâg x
moveq.l #0,d1
move.w _ms_pos_y,d1 * d1.w = y
sub.w d3,d1
lsl.l #7,d1 * 128 ö{
lea.l TEXTVRAM+$4_0000,a1
adda.l d1,a1
move.w _ms_pos_x,d1 * d1.w = x
sub.w d2,d1
move.w d1,d2
lsr.w #4,d1
add.w d1,d1
add.w d1,a1 * a1.l = ò`ëµé╖éΘâAâhâîâX
andi.w #15,d2 * d2.w = ò`ëµé╖éΘârâbâgê╩Æu (0~15)
move.l a1,old_ms_pos_ptr
move.w d2,old_ms_pos_bit
* TEXTVRAM é≡ò█æ╢é╖éΘ
lea.l ms_save,a0 * a0.l = ô]æùɵ
moveq.l #2-1,d0
@@:
.irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
move.l NEXT_LINE*%A(a1),(a0)+
.endm
adda.l #$2_0000,a1
dbra d0,@b
* â}âEâXâJü[â\âïé≡ò`ëµé╖éΘ
lea.l ms_pat_data,a0
move.l d6,d0 * â}âEâXâpâ^ü[âôö╘ìå
lsl.w #6,d0
adda.w d0,a0 * a0.l = ô]æùî│
move.l old_ms_pos_ptr,a1 * a1.l = ò`ëµé╖éΘâAâhâîâX
move.w old_ms_pos_bit,d6 * d6.w = ò`ëµé╖éΘârâbâgê╩Æu (0~15)
movea.l a1,a2 * a1.l = ò`ëµé╖éΘâAâhâîâXüiéQâyü[âWû┌üj
adda.l #$2_0000,a2 * a2.l = ò`ëµé╖éΘâAâhâîâXüiéRâyü[âWû┌üj
moveq.l #16-1,d5
@@:
moveq.l #0,d0
moveq.l #0,d1
move.w 32(a0),d1
move.w (a0)+,d0
swap.w d0 * d0.l = Åæé½ì₧é▐âpâ^ü[âôüiéQâyü[âWû┌üj
swap.w d1 * d1.l = Åæé½ì₧é▐âpâ^ü[âôüiéRâyü[âWû┌üjüòâ}âXâNâpâ^ü[âô
move.l (a1),d2 * d2.l = Åæé½ì₧é▐ TEXTVRAMüiéQâyü[âWû┌üj
move.l (a2),d3 * d3.l = üV üiéRâyü[âWû┌üj
lsr.l d6,d0
lsr.l d6,d1
move.l d1,d4
not.l d4 * d4.l = â}âXâNâpâ^ü[âô
and.l d4,d2
or.l d0,d2
move.l d2,(a1) *
and.l d4,d3
or.l d1,d3
move.l d3,(a2) *
lea.l NEXT_LINE(a1),a1
lea.l NEXT_LINE(a2),a2
dbra d5,@b
draw_mouse_cursor_rts:
move.w (sp)+,CRTC_R21
movem.l (sp)+,d1-d6/a0-a2
rts
*********************************************************
show_mouse_cursor: * â}âEâXâJü[â\âïé≡ò\Īé╖éΘ
_show_mouse_cursor:
* hide_mouse_cursor é╞âyâAé┼Ägéñ
move.b hide_level,d0
beq show_mouse_cursor_draw
subq.b #1,d0
bne show_mouse_cursor_not_draw
move.b d0,hide_level
clr.l old_ms_pos_ptr * Å┴ïÄé╠òKùvé╚é╡
show_mouse_cursor_draw:
moveq.l #0,d0 *! debug
bsr draw_mouse_cursor
bra show_mouse_cursor_rts
show_mouse_cursor_not_draw:
move.b d0,hide_level
show_mouse_cursor_rts:
rts
*********************************************************
hide_mouse_cursor: * â}âEâXâJü[â\âïé≡Å┴ïÄé╖éΘ
_hide_mouse_cursor:
addq.b #1,hide_level
moveq.l #-1,d0 * Å┴ïÄé╠é▌
bsr draw_mouse_cursor
rts
*********************************************************
.data
.even
ms_pat_data:
* âpâ^ü[âôéO
.dc.w %00000001_10000000
.dc.w %00000010_01000000
.dc.w %00000100_00100000
.dc.w %00001000_00010000
.dc.w %00010000_00001000
.dc.w %00100000_00000100
.dc.w %01111111_11111110
.dc.w %00000000_00000000
.dc.w %01111111_11111110
.dc.w %00100000_00000100
.dc.w %00010000_00001000
.dc.w %00001000_00010000
.dc.w %00000100_00100000
.dc.w %00000010_01000000
.dc.w %00000001_10000000
.dc.w %00000000_00000000
.dc.w %00000001_10000000
.dc.w %00000011_11000000
.dc.w %00000111_11100000
.dc.w %00001111_11110000
.dc.w %00011111_11111000
.dc.w %00111111_11111100
.dc.w %01111111_11111110
.dc.w %00000000_00000000
.dc.w %01111111_11111110
.dc.w %00111111_11111100
.dc.w %00011111_11111000
.dc.w %00001111_11110000
.dc.w %00000111_11100000
.dc.w %00000011_11000000
.dc.w %00000001_10000000
.dc.w %00000000_00000000
* âpâ^ü[âôéP
.dc.w %10000000_00000000
.dc.w %11000000_00000000
.dc.w %10100000_00000000
.dc.w %10010000_00000000
.dc.w %10001000_00000000
.dc.w %10000100_00000000
.dc.w %10000010_00000000
.dc.w %10000001_00000000
.dc.w %10000000_10000000
.dc.w %10000000_01000000
.dc.w %10000000_00100000
.dc.w %10001111_11110000
.dc.w %10010000_00000000
.dc.w %10100000_00000000
.dc.w %11000000_00000000
.dc.w %10000000_00000000
.dc.w %10000000_00000000
.dc.w %11000000_00000000
.dc.w %11100000_00000000
.dc.w %11110000_00000000
.dc.w %11111000_00000000
.dc.w %11111100_00000000
.dc.w %11111110_00000000
.dc.w %11111111_00000000
.dc.w %11111111_10000000
.dc.w %11111111_11000000
.dc.w %11111111_11100000
.dc.w %11111111_11110000
.dc.w %11110000_00000000
.dc.w %11100000_00000000
.dc.w %11000000_00000000
.dc.w %10000000_00000000
* âpâ^ü[âôéQ
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %01111111_11111110
.dc.w %00100000_00000100
.dc.w %00100000_00000100
.dc.w %00010000_00001000
.dc.w %00010000_00001000
.dc.w %00001000_00010000
.dc.w %00001000_00010000
.dc.w %00000100_00100000
.dc.w %00000100_00100000
.dc.w %00000010_01000000
.dc.w %00000010_01000000
.dc.w %00000001_10000000
.dc.w %00000001_10000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %01111111_11111110
.dc.w %00111111_11111100
.dc.w %00111111_11111100
.dc.w %00011111_11111000
.dc.w %00011111_11111000
.dc.w %00001111_11110000
.dc.w %00001111_11110000
.dc.w %00000111_11100000
.dc.w %00000111_11100000
.dc.w %00000011_11000000
.dc.w %00000011_11000000
.dc.w %00000001_10000000
.dc.w %00000001_10000000
.dc.w %00000000_00000000
* âpâ^ü[âôéR
.dc.w %00000000_00000000
.dc.w %00000001_10000000
.dc.w %00000001_10000000
.dc.w %00000010_01000000
.dc.w %00000010_01000000
.dc.w %00000100_00100000
.dc.w %00000100_00100000
.dc.w %00001000_00010000
.dc.w %00001000_00010000
.dc.w %00010000_00001000
.dc.w %00010000_00001000
.dc.w %00100000_00000100
.dc.w %00100000_00000100
.dc.w %01111111_11111110
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000001_10000000
.dc.w %00000001_10000000
.dc.w %00000011_11000000
.dc.w %00000011_11000000
.dc.w %00000111_11100000
.dc.w %00000111_11100000
.dc.w %00001111_11110000
.dc.w %00001111_11110000
.dc.w %00011111_11111000
.dc.w %00011111_11111000
.dc.w %00111111_11111100
.dc.w %00111111_11111100
.dc.w %01111111_11111110
.dc.w %00000000_00000000
.dc.w %00000000_00000000
* âpâ^ü[âôéS
.dc.w %11111111_11111111
.dc.w %01000000_00000010
.dc.w %00100000_00000100
.dc.w %00010000_00001000
.dc.w %00001000_00010000
.dc.w %00000100_00100000
.dc.w %00000010_01000000
.dc.w %00000001_10000000
.dc.w %11111111_11111111
.dc.w %01000000_00000010
.dc.w %00100000_00000100
.dc.w %00010000_00001000
.dc.w %00001000_00010000
.dc.w %00000100_00100000
.dc.w %00000010_01000000
.dc.w %00000001_10000000
.dc.w %11111111_11111111
.dc.w %01111111_11111110
.dc.w %00111111_11111100
.dc.w %00011111_11111000
.dc.w %00001111_11110000
.dc.w %00000111_11100000
.dc.w %00000011_11000000
.dc.w %00000001_10000000
.dc.w %11111111_11111111
.dc.w %01111111_11111110
.dc.w %00111111_11111100
.dc.w %00011111_11111000
.dc.w %00001111_11110000
.dc.w %00000111_11100000
.dc.w %00000011_11000000
.dc.w %00000001_10000000
* âpâ^ü[âôéT
.dc.w %00000001_10000000
.dc.w %00000010_01000000
.dc.w %00000100_00100000
.dc.w %00001000_00010000
.dc.w %00010000_00001000
.dc.w %00100000_00000100
.dc.w %01000000_00000010
.dc.w %11111111_11111111
.dc.w %00000001_10000000
.dc.w %00000010_01000000
.dc.w %00000100_00100000
.dc.w %00001000_00010000
.dc.w %00010000_00001000
.dc.w %00100000_00000100
.dc.w %01000000_00000010
.dc.w %11111111_11111111
.dc.w %00000001_10000000
.dc.w %00000011_11000000
.dc.w %00000111_11100000
.dc.w %00001111_11110000
.dc.w %00011111_11111000
.dc.w %00111111_11111100
.dc.w %01111111_11111110
.dc.w %11111111_11111111
.dc.w %00000001_10000000
.dc.w %00000011_11000000
.dc.w %00000111_11100000
.dc.w %00001111_11110000
.dc.w %00011111_11111000
.dc.w %00111111_11111100
.dc.w %01111111_11111110
.dc.w %11111111_11111111
* âpâ^ü[âôéU
.dc.w %10000000_00000001
.dc.w %11000000_00000011
.dc.w %10100000_00000101
.dc.w %10010000_00001001
.dc.w %10001000_00010001
.dc.w %10000100_00100001
.dc.w %10000010_01000001
.dc.w %10000001_10000001
.dc.w %10000010_01000001
.dc.w %10000100_00100001
.dc.w %10001000_00010001
.dc.w %10010000_00001001
.dc.w %10100000_00000101
.dc.w %11000000_00000011
.dc.w %10000000_00000001
.dc.w %00000000_00000000
.dc.w %10000000_00000001
.dc.w %11000000_00000011
.dc.w %11100000_00000111
.dc.w %11110000_00001111
.dc.w %11111000_00011111
.dc.w %11111100_00111111
.dc.w %11111110_01111111
.dc.w %11111111_11111111
.dc.w %11111110_01111111
.dc.w %11111100_00111111
.dc.w %11111000_00011111
.dc.w %11110000_00001111
.dc.w %11100000_00000111
.dc.w %11000000_00000011
.dc.w %10000000_00000001
.dc.w %00000000_00000000
* âpâ^ü[âôéV
.dc.w %00000111_11100000
.dc.w %00011000_00011000
.dc.w %00100011_11000100
.dc.w %01001100_00100010
.dc.w %01010000_01001010
.dc.w %10010000_10010101
.dc.w %10100001_00100101
.dc.w %10100010_01000101
.dc.w %10100100_10000101
.dc.w %10101001_00000101
.dc.w %10010010_00001001
.dc.w %01000100_00001010
.dc.w %01001100_00110010
.dc.w %00100011_11000100
.dc.w %00011000_00011000
.dc.w %00000111_11100000
.dc.w %00000111_11100000
.dc.w %00011111_11111000
.dc.w %00111111_11111100
.dc.w %01111100_00111110
.dc.w %01110000_01111110
.dc.w %11110000_11110111
.dc.w %11100001_11100111
.dc.w %11100011_11000111
.dc.w %11100111_10000111
.dc.w %11101111_00000111
.dc.w %11111110_00001111
.dc.w %01111100_00001110
.dc.w %01111100_00111110
.dc.w %00111111_11111100
.dc.w %00011111_11111000
.dc.w %00000111_11100000
.if 0
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.dc.w %00000000_00000000
.endif
ms_hot_spot_data:
.dc.w 7,7
.dc.w 0,0
.dc.w 7,7
.dc.w 7,7
.dc.w 7,7
.dc.w 7,7
.even
.bss
.even
old_ms_pos_ptr: .ds.l 1
old_ms_pos_bit: .ds.w 1
ms_save: .ds.l 16*2 * TEXTVRAM é≡ò█æ╢é╖éΘâÅü[âN
hide_level: .ds.b 1 * â}âEâXö±ò\Īâîâxâï
* = 0 é┼ò\Ī
* > 0 é┼ö±ò\Īüi_HideMousCursor é¬î─é╬éΩéΘôxé╔ +1üj
.even